package Leetcode第二期;

/**
 * @author : K k
 * @date : 10:06 2020/10/4
 * 给定一个正整数 n，生成一个包含 1 到 n2 所有元素，且元素按顺时针顺序螺旋排列的正方形矩阵。
 *
 * 示例:
 *
 * 输入: 3
 * 输出:
 * [
 *  [ 1, 2, 3 ],
 *  [ 8, 9, 4 ],
 *  [ 7, 6, 5 ]
 * ]
 */
public class 螺旋矩阵II_59 {

    //思路： n x n的矩阵
    public int[][] generateMatrix(int n) {
        int col1=0,col2=n-1,row1=0,row2=n-1;
        int[][] res=new int[n][n];

        int index=1;
        while (row1 <= row2 || col1 <= col2) {
            if (row1 <= row2) {
                for (int i = col1; i <= col2; i++) {
                    res[row1][i]=index++;
                }
            }
            if (col1 <= col2) {
                for (int i = row1 + 1; i <= row2; i++) {
                    res[i][col2]=index++;
                }
            }
            if (col1 < col2 && row1 < row2) {
                for (int i = col2 - 1; i >= col1; i--) {
                    res[row2][i]=index++;
                }
                for (int i = row2 - 1; i > row1; i--) {
                    res[i][col1]=index++;
                }
            }
            col1++;
            col2--;
            row1++;
            row2--;
        }
        return res;
    }
}
